home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.001 / crossfir~ / eutl / tcplib / sizedmsg.c < prev    next >
C/C++ Source or Header  |  1994-09-19  |  2KB  |  92 lines

  1. #include <stdio.h>
  2. #include "tcplib.h"
  3. #include "xmalloc.h"
  4. #include "timelib.h"
  5.  
  6. const int port=8855;
  7.  
  8. #ifdef __hppa__
  9. #define random() rand()
  10. #define srandom(x) srand(x)
  11. #endif
  12.  
  13. void Send(int npackets,int rmin,int rmax)
  14. {
  15.   int l,s;
  16.   char *buf;
  17.   TcpSocket conn;
  18.  
  19.   buf = xmalloc(rmax);
  20.  
  21.   conn = GetConnection(NULL,port);
  22.   TcpLibBufferOutput(conn,1);
  23.   srandom(time(NULL)>>1 ^ getpid()<<3);
  24.   for(l=0;l<npackets;l++) {
  25.     s = random()%(rmin-rmax+1)+rmin;
  26. /*    printf("Send %d\n",l);*/
  27.     SendSizedMsg(conn,buf,s);
  28. /* Depend on automatic flushing */
  29.   }
  30.   TcpLibFlush(conn);
  31.   exit(0);
  32. }
  33.   
  34. void Receive(int npackets)
  35. {
  36.   int l;
  37.   char *buf;
  38.   TcpSocket server,conn;
  39.   struct timeval start,end;
  40.   long size,total;
  41.  
  42.   buf = xmalloc(size);
  43.  
  44.   server = BecomeServer(port);
  45.   WaitForInput(&server,1,TCPLIB_FOREVER);
  46.   if (!HasInput(server)) {
  47.     fprintf(stderr,"WaitForInput returned, but no input\n");
  48.     exit(1);
  49.   }
  50. /*  printf("Accepting Connection\n");*/
  51.   conn = AcceptConnection(server,NULL);
  52.   gettimeofday(&start,NULL);
  53.   total = 0;
  54.   for(l=0;l<npackets;l++) {
  55. /*    printf("Receive %d\n",l);*/
  56.     (void)GetSizedMsg(conn,&size);
  57.     total += size;
  58.   }
  59.   gettimeofday(&end,NULL);
  60.   printf("Receive of %d packets, total size %d took %d ms, %d bytes/ms\n",
  61.      npackets,total,msDiff(end,start),(total)/msDiff(end,start));
  62.   exit(0);
  63. }
  64.     
  65. main(int argc,char *argv[])
  66. {
  67.   int npackets,min,max;
  68.  
  69.   if ((argc == 3)&&
  70.       (strcmp(argv[1],"-r")==0)&&
  71.       ((npackets = atoi(argv[2]))>0)) {
  72.     /* Good args -- receive */
  73.   } else if ((argc == 5)&&
  74.          (strcmp(argv[1],"-s")==0) &&
  75.          ((npackets = atoi(argv[2]))>0) &&
  76.          ((min = atoi(argv[3]))>0) &&
  77.          ((max = atoi(argv[4]))>=min)) {
  78.     /* Good Args -- send */
  79.   } else {
  80.     fprintf(stderr,"Usage:%s <-r npackets|-s npackets minsize maxsize>\n",
  81.         argv[0]);
  82.     exit(1);
  83.   }
  84.   
  85.   if (strcmp(argv[1],"-s")==0)
  86.     Send(npackets,min,max);
  87.   else
  88.     Receive(npackets);
  89.   exit(1);
  90. }
  91.  
  92.